home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 2
/
AACD 2.iso
/
AACD
/
Programming
/
NRCOBOL1g
/
COBFILES
/
ADVERTS3.COB
< prev
next >
Wrap
Text File
|
1997-06-25
|
24KB
|
535 lines
IDENTIFICATION DIVISION.
PROGRAM-ID. ADVERTS3.
*PROGRAM DISCRIPTION.
* A program to print an income report for an advertising agency.
* The advertisements will be in several different newspapers
* and will be grouped according to the catergory of ad.
* The program uses table lookup filess to translate the codes from
* the input file to report data, printer optioned out!.
*
*AUTHOR. cHArRiOTt.
*INSTALLATION.
*DATE-WRITTEN. 24th AUG 89.
*DATE-COMPILLED.
*SECURITY.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. AMSTRAD 1512.
OBJECT-COMPUTER.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN-ADVERT-FILE
ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-FILE-STATUS.
SELECT IN-NEWSPAPER-NAME
ASSIGN TO DISK
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS ER-PAPER-CODE
FILE STATUS IS WS-PAPER-FILE-STATUS.
SELECT IN-ADVERT-TYPE
ASSIGN TO DISK
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS ER-IN-AD-CODE
FILE STATUS IS WS-AD-TYPE-STATUS.
SELECT OUT-INCOME-REPORT
ASSIGN TO PRINTER
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-PRINT-STATUS.
*
DATA DIVISION.
FILE SECTION.
FD IN-ADVERT-FILE
LABEL RECORD IS STANDARD
VALUE OF FILE-ID IS "ADVERTS.FIL".
01 ER-ADVERT-FILE.
03 ER-NEWSPAPER-CODE PIC X(3).
03 ER-AD-TYPE-CODE PIC 9(3).
03 ER-ACCOUNT-NUMBER PIC 9(6).
03 ER-ACCOUNT-NAME PIC X(20).
03 ER-NUMBER-OF-LINES PIC 99.
03 ER-AD-DURATION PIC 999.
03 ER-STARTING-DATE PIC 9(6).
*
FD IN-NEWSPAPER-NAME
LABEL RECORD IS STANDARD
VALUE OF FILE-ID IS "PAPER.NAM".
01 ER-NEWSPAPER-NAME.
03 ER-PAPER-CODE PIC X(3).
03 ER-PAPER-NAME PIC X(25).
*
FD IN-ADVERT-TYPE
LABEL RECORD IS STANDARD
VALUE OF FILE-ID IS "ADVERT.TYP".
01 ER-ADVERT-TYPE.
03 ER-IN-AD-CODE PIC 9(3).
03 ER-TYPE-OF-AD PIC X(20).
03 ER-PRICE-PER-LINE PIC 9V99.
*
FD OUT-INCOME-REPORT
LABEL RECORD IS OMITTED.
01 PRT-INCOME-REPORT.
03 FILLER PIC A(80).
*
WORKING-STORAGE SECTION.
01 WS-ADVERT-FILE.
03 WS-NEWSPAPER-CODE PIC X(3).
03 WS-AD-TYPE-CODE PIC 9(3).
03 WS-ACCOUNT-NUMBER PIC 9(6).
03 WS-ACCOUNT-NAME PIC X(20).
03 WS-NUMBER-OF-LINES PIC 99.
03 WS-AD-DURATION PIC 999.
03 WS-STARTING-DATE.
05 WS-STARTING-DAY PIC 99.
05 WS-STARTING-MONTH PIC 99.
05 WS-STARTING-YEAR PIC 99.
*
01 WS-NEWSPAPER-NAME.
03 WS-PAPER-CODE PIC X(3).
03 WS-PAPER-NAME PIC X(25).
*
01 WS-ADVERT-TYPE.
03 WS-IN-AD-CODE PIC 9(3).
03 WS-TYPE-OF-AD PIC X(20).
03 WS-PRICE-PER-LINE PIC 9V99.
*
01 WS-REAL-DATE.
03 WS-REAL-YEAR PIC XX.
03 WS-REAL-MONTH PIC XX.
03 WS-REAL-DAY PIC XX.
01 WS-TEMP-DATE.
03 WS-TEMP-DAY PIC XX.
03 FILLER PIC X VALUE "/".
03 WS-TEMP-MONTH PIC XX.
03 FILLER PIC X VALUE "/".
03 WS-TEMP-YEAR PIC XX.
*
01 WS-COUNTERS.
03 WS-PAGE-COUNTER PIC 99.
03 WS-LINE-COUNTER PIC 99.
03 WS-NUMBER-OF-ACCOUNTS PIC 9999.
03 WS-AVG-PRICE-PER-LINE PIC 9999V99.
03 WS-TOTAL-LINES PIC 999999.
03 WS-AVG-NUMBER-OF-LINES PIC 999999.
03 WS-INCOME-EARNED PIC 99999V99.
03 WS-TOTAL-INCOME-EARNED PIC 99999V99.
01 WS-STOP-RUN-FLAG PIC X VALUE " ".
01 WS-END-FILE-FLAG PIC X VALUE " ".
01 WS-ABORT-READ-FLAG PIC X VALUE " ".
01 WS-FILE-STATUS PIC XX VALUE "00".
01 WS-PAPER-FILE-STATUS PIC XX VALUE "00".
01 WS-AD-TYPE-STATUS PIC XX VALUE "00".
01 WS-PRINT-STATUS PIC XX VALUE "00".
01 WS-RESPONCE PIC X.
88 WS-RESPONCE-Q VALUE "Q" "q".
88 WS-RESPONCE-P VALUE "P" "p".
88 WS-RESPONCE-S VALUE "S" "s".
88 WS-RESPONCE-YN VALUE "Y" "N"
"y" "n".
88 WS-RESPONCE-Y VALUE "Y" "y".
88 WS-RESPONCE-N VALUE "N" "n".
*
01 PRINT-PROG-TITLE.
03 WS-PRT-TEMP-DATE PIC X(8).
03 FILLER PIC X(14) VALUE SPACES.
03 FILLER PIC X(36) VALUE
"CLASSIFIED ADVERTISING INCOME REPORT".
03 FILLER PIC X(7) VALUE SPACES.
03 FILLER PIC X(5) VALUE "PAGE ".
03 WS-PRT-PAGE-COUNTER PIC 99.
01 PRINT-RECORD.
03 PRT-PAPER-NAME.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(26) VALUE "NEWSPAPER NAME : ".
05 WS-PRT-PAPER-NAME PIC X(25).
03 PRT-TYPE-OF-AD.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(26) VALUE "TYPE OF ADVERT : ".
05 WS-PRT-TYPE-OF-AD PIC X(20).
03 PRT-ACCOUNT-NUMBER.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(26) VALUE "ACCOUNT NUMBER : ".
05 WS-PRT-ACCOUNT-NUMBER PIC 9(6).
03 PRT-ACCOUNT-NAME.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(26) VALUE "ACCOUNT NAME : ".
05 WS-PRT-ACCOUNT-NAME PIC X(20).
03 PRT-NUMBER-OF-LINES.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(26) VALUE "NUMBER OF LINES : ".
05 WS-PRT-NUMBER-OF-LINES PIC Z9.
03 PRT-AD-DURATION.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(26) VALUE "ADVERT'S DURATION (DAYS): ".
05 WS-PRT-AD-DURATION PIC ZZ9.
03 PRT-PRICE-PER-LINE.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(29) VALUE "PRICE PER LINE : ".
05 WS-PRT-PRICE-PER-LINE PIC $9.99.
03 PRT-INCOME-EARNED.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(26) VALUE "INCOME EARNED : ".
05 WS-PRT-INCOME-EARNED PIC $$$$9.99.
01 PRINT-TOTALS.
03 PRT-NUMBER-OF-ACCOUNTS.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(28) VALUE "NUMBER OF ACCOUNTS : ".
05 WS-PRT-NUMBER-OF-ACCOUNTS PIC ZZZ9.
03 PRT-AVG-NUMBER-OF-LINES.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(26) VALUE "AVERAGE NUMBER OF LINES : ".
05 WS-PRT-AVG-NUMBER-OF-LINES PIC ZZZZZ9.
03 PRT-AVG-PRICE-PER-LINE.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(27) VALUE "AVERAGE PRICE PER LINE : ".
05 WS-PRT-AVG-PRICE-PER-LINE PIC $$$9.99.
03 PRT-TOTAL-INCOME-EARNED.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(26) VALUE "TOTAL INCOME EARNED : ".
05 WS-PRT-TOTAL-INCOME-EARNED PIC $$$$9.99.
*
SCREEN SECTION.
01 BLANK-SCREEN.
03 BLANK SCREEN.
01 PROG-DISCRIPTION.
03 LINE 1 COLUMN 5 VALUE
"A PROGRAM TO PRODUCE CLASSIFIED ADVERTISING INCOME REPORT".
01 DIS-PROG-TITLE.
03 LINE 3 COLUMN 1 PIC X(8) FROM WS-TEMP-DATE.
03 LINE 3 COLUMN 22 HIGHLIGHT VALUE
"CLASSIFIED ADVERTISING INCOME REPORT".
03 LINE 3 COLUMN 65 VALUE "PAGE ".
03 LINE 3 COLUMN 70 PIC X(8) FROM WS-PAGE-COUNTER.
01 DIS-RECORD.
03 LINE 6 COLUMN 5 VALUE "NEWSPAPER NAME : ".
03 LINE 6 COLUMN 31 PIC X(25) FROM WS-PAPER-NAME.
03 LINE 7 COLUMN 5 VALUE "TYPE OF ADVERT : ".
03 LINE 7 COLUMN 31 PIC X(20) FROM WS-TYPE-OF-AD.
03 LINE 8 COLUMN 5 VALUE "ACCOUNT NUMBER : ".
03 LINE 8 COLUMN 31 PIC 9(6) FROM WS-ACCOUNT-NUMBER.
03 LINE 9 COLUMN 5 VALUE "ACCOUNT NAME : ".
03 LINE 9 COLUMN 31 PIC X(20) FROM WS-ACCOUNT-NAME.
03 LINE 10 COLUMN 5 VALUE "NUMBER OF LINES : ".
03 LINE 10 COLUMN 31 PIC 99 FROM WS-NUMBER-OF-LINES.
03 LINE 11 COLUMN 5 VALUE "ADVERT'S DURATION (DAYS): ".
03 LINE 11 COLUMN 31 PIC 999 FROM WS-AD-DURATION.
03 LINE 12 COLUMN 5 VALUE "PRICE PER LINE : $".
03 LINE 12 COLUMN 32 PIC 9V99 FROM WS-PRICE-PER-LINE.
03 LINE 13 COLUMN 5 VALUE "INCOME EARNED : $".
03 LINE 13 COLUMN 32 PIC 9(5)V99 FROM WS-INCOME-EARNED.
03 LINE 15 COLUMN 5 VALUE "RECORD NUMBER : ".
03 LINE 15 COLUMN 31 PIC 9(4) FROM WS-NUMBER-OF-ACCOUNTS.
01 DIS-TOTALS.
03 LINE 19 COLUMN 5 VALUE "NUMBER OF ACCOUNTS : ".
03 LINE 19 COLUMN 31 PIC 9(4) FROM WS-NUMBER-OF-ACCOUNTS.
03 LINE 20 COLUMN 5 VALUE "AVERAGE NUMBER OF LINES : ".
03 LINE 20 COLUMN 31 PIC 9(6) FROM WS-AVG-NUMBER-OF-LINES.
03 LINE 21 COLUMN 5 VALUE "AVERAGE PRICE PER LINE : $".
03 LINE 21 COLUMN 32 PIC 9(4)V99 FROM WS-AVG-PRICE-PER-LINE.
03 LINE 22 COLUMN 5 VALUE "TOTAL INCOME EARNED : $".
03 LINE 22 COLUMN 32 PIC 9(5)V99 FROM WS-TOTAL-INCOME-EARNED.
01 MENU.
03 LINE 8 COLUMN 33 UNDERLINE VALUE "MENU".
03 LINE 13 COLUMN 22 VALUE "PRESS 'P' to list to PRINTER".
03 LINE 15 COLUMN 22 VALUE " 'S' to list to SCREEN ".
03 LINE 17 COLUMN 22 VALUE " 'Q' to quit MENU ".
01 MENU-INPUT.
03 LINE 20 COLUMN 22 PIC X TO WS-RESPONCE AUTO.
01 TASK-RUNING.
03 LINE 23 COLUMN 5 HIGHLIGHT VALUE
"REPORT NOW BEING PRINTED".
01 PROG-FINISH.
03 LINE 25 COLUMN 1 BLANK LINE.
03 LINE 25 COLUMN 5 VALUE "TASK COMPLEATE".
01 ANY-KEY.
03 LINE 25 COLUMN 48 PIC X TO WS-RESPONCE AUTO.
01 RESPONCE-LINE.
03 LINE 25 COLUMN 5 VALUE
"PRINT ANY KEY TO CONTINUE ('Q' TO QUIT) > ".
*
01 ERROR-MESSAGES.
03 LINE 23 COLUMN 5 VALUE
"FILE WOULD NOT OPEN :ADS:PAP:TYP:PRT:".
03 LINE 24 COLUMN 5 VALUE
"STATUS ERROR CODES : : : : :".
03 LINE 24 COLUMN 26 HIGHLIGHT PIC XX
FROM WS-FILE-STATUS.
03 LINE 24 COLUMN 30 HIGHLIGHT PIC XX
FROM WS-PAPER-FILE-STATUS.
03 LINE 24 COLUMN 34 HIGHLIGHT PIC XX
FROM WS-AD-TYPE-STATUS.
03 LINE 24 COLUMN 38 HIGHLIGHT PIC XX
FROM WS-PRINT-STATUS.
*
PROCEDURE DIVISION.
*
*****************************************************
* This paragraph opens all files for either input or output.
* These files are then tested for errors.An error message is
* displayed and the program terminated if any errors are found
* other wise 1000-DISPLAY is performed until WS-STOP-RUN-FLAG
* equals "S".
*
0000-MAIN.
OPEN INPUT IN-ADVERT-FILE.
OPEN INPUT IN-NEWSPAPER-NAME.
OPEN INPUT IN-ADVERT-TYPE.
* OPEN OUTPUT OUT-INCOME-REPORT.
IF WS-FILE-STATUS = "00" AND
WS-PAPER-FILE-STATUS = "00" AND
WS-AD-TYPE-STATUS = "00"
*AND
* WS-PRINT-STATUS = "00"
PERFORM 1000-DISPLAY
UNTIL WS-STOP-RUN-FLAG = "S"
ELSE
DISPLAY ERROR-MESSAGES.
CLOSE IN-ADVERT-FILE.
CLOSE IN-NEWSPAPER-NAME.
CLOSE IN-ADVERT-TYPE.
* CLOSE OUT-INCOME-REPORT.
STOP RUN.
*
**********************************************************
* This paragraph displays the program's discription, accepts
* the system's date then display's a MENU for the user's input.
* Acceptable input are 'Q' to quit the praragraph and program,
* 'S' to display the income report on the screen until the
* end file flag is equal to 'S' or 'P' to display the the income
* report on the printer, again until the end file flag equal 'S'.
* Note the IN-ADVERT-FILE is closed and opened at the end of this
* file so that the file pointer is again set to the start of this
* file.
*
1000-DISPLAY.
MOVE ZEROS TO WS-COUNTERS.
MOVE SPACE TO WS-END-FILE-FLAG.
DISPLAY BLANK-SCREEN.
DISPLAY PROG-DISCRIPTION.
ACCEPT WS-REAL-DATE FROM DATE.
MOVE WS-REAL-DAY TO WS-TEMP-DAY.
MOVE WS-REAL-MONTH TO WS-TEMP-MONTH.
MOVE WS-REAL-YEAR TO WS-TEMP-YEAR.
DISPLAY DIS-PROG-TITLE.
DISPLAY MENU.
ACCEPT MENU-INPUT.
IF WS-RESPONCE-Q
MOVE "S" TO WS-STOP-RUN-FLAG
DISPLAY PROG-FINISH
ELSE
IF WS-RESPONCE-S
PERFORM 1100-DISPLAY-FILE
UNTIL WS-END-FILE-FLAG = "S"
ELSE
IF WS-RESPONCE-P
MOVE "S" TO WS-STOP-RUN-FLAG.
* DISPLAY TASK-RUNING
* PERFORM 1210-PRINT-TITLE
* PERFORM 1200-PRINT-FILE
* UNTIL WS-END-FILE-FLAG = "S".
CLOSE IN-ADVERT-FILE.
OPEN INPUT IN-ADVERT-FILE.
*
**********************************************************
* This paragraph display the contents of IN-ADVERT-FILE to the
* screen until WS-END-FILE-FLAG IS 'S', this can be forced by
* returning 'Q' for quit at the responce line prompt. The
* pararagraph performs 1300-READ-FILE to read all files into
* working storage, these are then displayed to screen by DISPLAY
* DIS-RECORD. At the file end or when forced, the file's totals
* are displayed to the screen by DISPLAY DIS-TOTALS.
*
1100-DISPLAY-FILE.
PERFORM 1300-READ-FILE.
IF NOT WS-ABORT-READ-FLAG EQUAL " "
DISPLAY (24 5) "READ ABORT WITH CODE "
WS-ABORT-READ-FLAG
ACCEPT MENU-INPUT
MOVE " " TO WS-ABORT-READ-FLAG
ELSE
IF WS-END-FILE-FLAG NOT EQUAL "S" AND
WS-ABORT-READ-FLAG EQUAL " "
PERFORM 1110-DISPLAY-TITLE
ADD 1 TO WS-NUMBER-OF-ACCOUNTS
ADD WS-NUMBER-OF-LINES TO WS-TOTAL-LINES
MULTIPLY WS-NUMBER-OF-LINES BY WS-PRICE-PER-LINE
GIVING WS-INCOME-EARNED
ADD WS-INCOME-EARNED TO WS-TOTAL-INCOME-EARNED
DISPLAY DIS-RECORD
DISPLAY RESPONCE-LINE
ACCEPT ANY-KEY.
IF WS-RESPONCE-Q MOVE "S" TO WS-END-FILE-FLAG.
IF WS-END-FILE-FLAG EQUAL "S"
DIVIDE WS-TOTAL-LINES BY WS-NUMBER-OF-ACCOUNTS
GIVING WS-AVG-NUMBER-OF-LINES
DIVIDE WS-TOTAL-INCOME-EARNED BY WS-TOTAL-LINES
GIVING WS-AVG-PRICE-PER-LINE
DISPLAY DIS-TOTALS
DISPLAY RESPONCE-LINE
ACCEPT ANY-KEY.
*
**********************************************************
* This paragraph increments the page counter then display's
* the date, program title and page number by DISPLAY DIS-TITLE.
*
1110-DISPLAY-TITLE.
DISPLAY BLANK-SCREEN.
DISPLAY PROG-DISCRIPTION.
ADD 1 TO WS-PAGE-COUNTER.
DISPLAY DIS-PROG-TITLE.
*
**********************************************************
* This paragraph display the contents of IN-ADVERT-FILE to the
* printer until WS-END-FILE-FLAG IS 'S'. The pararagraph performs
* 1300-READ-FILE to read all files into working storage, these
* are then displayed to the printer by perform 1220-PRINT-RECORD.
* At the file's end the file's totals are displayed to the screen
* by perform 1230-PRINT-TOTALS. NOTE 1210-PRINT-TITLE is performed
* initially by the calling paragraph and then when WS-LINE-COUNTER
* is greater than 55.
*
1200-PRINT-FILE.
PERFORM 1300-READ-FILE.
IF WS-END-FILE-FLAG NOT EQUAL "S"
ADD 1 TO WS-NUMBER-OF-ACCOUNTS
ADD WS-NUMBER-OF-LINES TO WS-TOTAL-LINES
MULTIPLY WS-NUMBER-OF-LINES BY WS-PRICE-PER-LINE
GIVING WS-INCOME-EARNED
ADD WS-INCOME-EARNED TO WS-TOTAL-INCOME-EARNED
IF WS-LINE-COUNTER GREATER 55
PERFORM 1210-PRINT-TITLE
PERFORM 1220-PRINT-RECORD
ELSE
PERFORM 1220-PRINT-RECORD
ELSE
DIVIDE WS-TOTAL-LINES BY WS-NUMBER-OF-ACCOUNTS
GIVING WS-AVG-NUMBER-OF-LINES
DIVIDE WS-TOTAL-INCOME-EARNED BY WS-TOTAL-LINES
GIVING WS-AVG-PRICE-PER-LINE
PERFORM 1230-PRINT-TOTALS.
*
**********************************************************
* This paragraph increments the page counter then display's
* the date, program title and page number by DISPLAY DIS-TITLE.
*
1210-PRINT-TITLE.
ADD 1 TO WS-PAGE-COUNTER.
MOVE SPACES TO PRT-INCOME-REPORT.
MOVE WS-TEMP-DATE TO WS-PRT-TEMP-DATE.
MOVE WS-PAGE-COUNTER TO WS-PRT-PAGE-COUNTER.
MOVE PRINT-PROG-TITLE TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER PAGE.
MOVE 1 TO WS-LINE-COUNTER.
*
**********************************************************
* This paragraph sends the data of the required fields to
* the printer, then incrementes WS-LINE-COUNTER by 8.
*
1220-PRINT-RECORD.
MOVE SPACES TO PRT-INCOME-REPORT.
MOVE WS-PAPER-NAME TO WS-PRT-PAPER-NAME.
MOVE PRT-PAPER-NAME TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER 2.
MOVE SPACES TO PRT-INCOME-REPORT.
MOVE WS-TYPE-OF-AD TO WS-PRT-TYPE-OF-AD.
MOVE PRT-TYPE-OF-AD TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER 1.
MOVE SPACES TO PRT-INCOME-REPORT.
MOVE WS-ACCOUNT-NUMBER TO WS-PRT-ACCOUNT-NUMBER.
MOVE PRT-ACCOUNT-NUMBER TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER 1.
MOVE SPACES TO PRT-INCOME-REPORT.
MOVE WS-ACCOUNT-NAME TO WS-PRT-ACCOUNT-NAME.
MOVE PRT-ACCOUNT-NAME TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER 1.
MOVE SPACES TO PRT-INCOME-REPORT.
MOVE WS-NUMBER-OF-LINES TO WS-PRT-NUMBER-OF-LINES.
MOVE PRT-NUMBER-OF-LINES TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER 1.
MOVE SPACES TO PRT-INCOME-REPORT.
MOVE WS-AD-DURATION TO WS-PRT-AD-DURATION.
MOVE PRT-AD-DURATION TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER 1.
MOVE SPACES TO PRT-INCOME-REPORT.
MOVE WS-PRICE-PER-LINE TO WS-PRT-PRICE-PER-LINE.
MOVE PRT-PRICE-PER-LINE TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER 1.
MOVE SPACES TO PRT-INCOME-REPORT.
MOVE WS-INCOME-EARNED TO WS-PRT-INCOME-EARNED.
MOVE PRT-INCOME-EARNED TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER 1.
ADD 8 TO WS-LINE-COUNTER.
*
**********************************************************
* This papragraph sends the required total fields to the printer.
*
1230-PRINT-TOTALS.
MOVE SPACES TO PRT-INCOME-REPORT.
MOVE WS-NUMBER-OF-ACCOUNTS TO WS-PRT-NUMBER-OF-ACCOUNTS.
MOVE PRT-NUMBER-OF-ACCOUNTS TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER 2.
MOVE SPACES TO PRT-INCOME-REPORT.
MOVE WS-AVG-NUMBER-OF-LINES TO WS-PRT-AVG-NUMBER-OF-LINES.
MOVE PRT-AVG-NUMBER-OF-LINES TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER 1.
MOVE SPACES TO PRT-INCOME-REPORT.
MOVE WS-AVG-PRICE-PER-LINE TO WS-PRT-AVG-PRICE-PER-LINE.
MOVE PRT-AVG-PRICE-PER-LINE TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER 1.
MOVE SPACES TO PRT-INCOME-REPORT.
MOVE WS-TOTAL-INCOME-EARNED TO WS-PRT-TOTAL-INCOME-EARNED.
MOVE PRT-TOTAL-INCOME-EARNED TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER 1.
MOVE SPACES TO PRT-INCOME-REPORT.
WRITE PRT-INCOME-REPORT AFTER 1.
*
**********************************************************
* This papragraph reads IN-ADVERT-FILE to working storage
* and sets WS-END-FILE-FLAG, if the end is reached.It also reads
* IN-NEWSPAPER-NAME and IN-ADVERT-TYPE to working storage, any
* errors are indicated in WS-ABORT-READ-FLAG for later DEBUGGING.
*
1300-READ-FILE.
READ IN-ADVERT-FILE INTO WS-ADVERT-FILE
AT END MOVE "S" TO WS-END-FILE-FLAG.
IF WS-END-FILE-FLAG NOT EQUAL "S"
MOVE WS-NEWSPAPER-CODE TO ER-PAPER-CODE
READ IN-NEWSPAPER-NAME INTO WS-NEWSPAPER-NAME
INVALID KEY MOVE "A" TO WS-ABORT-READ-FLAG.
IF WS-ABORT-READ-FLAG NOT EQUAL "A" AND
WS-END-FILE-FLAG NOT EQUAL "S"
MOVE WS-AD-TYPE-CODE TO ER-IN-AD-CODE
READ IN-ADVERT-TYPE INTO WS-ADVERT-TYPE
INVALID KEY MOVE "B" TO WS-ABORT-READ-FLAG.
*
***************************************************************